package com.wakaca.design.principle.dependenceinversion;

/**
 * Created by wakaca
 */
public class Wakaca {

    private ICourse iCourse;

    /**
     * 这里传入的对象是要用接口的，因为具体传入什么课程是要依据高层模块 Test 的选择
     * Wakaca 在选择学习课程的时候，具体的实现类交给高层次模块，而不是针对 Wakaca 这个实现类编写
     * @param iCourse
     */
    public void setiCourse(ICourse iCourse) {
        this.iCourse = iCourse;
    }

    public void studyImoocCourse(){
        iCourse.studyCourse();
    }

    // v1
//    public void studyJavaCource() {
//        System.out.println("Wakaca在学习Java课程");
//    }
//    public void studyPythonCource() {
//        System.out.println("Wakaca在学习Python课程");
//    }

    // v2
//    public void studyImoocCourse(ICourse iCourse){
//        iCourse.studyCourse();
//    }

    // v3
//    public Wakaca(ICourse iCourse) {
//        this.iCourse = iCourse;
//    }

}
